package com.yonyou.cyxdms.basedata.service.vo.productinfo;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLongLocalDateTimeDeserializer;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLongLocalDateTimeSerializer;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonSimpleLocalDateDeserializer;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonSimpleLocalDateSerializer;
import com.yonyou.cyxdms.framework.bean.dto.base.DMSBaseDTO;
import io.swagger.annotations.ApiParam;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;


/**
 * <p>
 * 定义车辆产品，一个车辆产品表示一类车辆，车辆产品定义即可以由车厂下发，也可以自定义
 * </p>
 *
 * @author renwd
 * @since 2019-01-18
 */

public class DcsVsProductVO extends DMSBaseDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer productId;

    private String dealerCode;

    private String appId;

    /**
     * 产品代码
     */
    private String productCode;
    /**
     * 产品名称
     */
    private String productName;
    /**
     * 数据来源
     */
    private Integer dataSources;
    /**
     * 配置_ID
     */
    private Integer packageId;
    /**
     * 颜色
     */
    private String color;
    private String colorCode;

    private Long colorId;

    private String trimColor;
    private String trimColorCode;

    private Long trimColorId;

    private Integer isPurchase;

    private Integer isSales;

    private String modelYear;

    private Integer boxType;

    private String volume;

    private Integer isSend;

    private Integer productType;
    private Integer productStatus;
    private Integer isValid;
    /**
     * 车厂指导价
     */
    private Double oemDirectivePrice;
    /**
     * 销售指导价
     */
    private Double directivePrice;

    /**
     * 上市日期
     */
    @ApiParam(name = "上市日期", value = "上市日期")
    @JsonDeserialize(using = JsonSimpleLocalDateDeserializer.class)
    @JsonSerialize(using = JsonSimpleLocalDateSerializer.class)
    private LocalDate enterDate;
    /**
     * 退市日期
     */
    @ApiParam(name = "退市日期", value = "退市日期")
    @JsonDeserialize(using = JsonSimpleLocalDateDeserializer.class)
    @JsonSerialize(using = JsonSimpleLocalDateSerializer.class)
    private LocalDate exeuntDate;

    private String remark;
    private Integer vehicleSources;

    private Integer organizationId;
    private String sourceId;

    @JsonDeserialize(using = JsonLongLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLongLocalDateTimeSerializer.class)
    private LocalDateTime sourceChangedAt;
    private Integer modelId;
    private Integer brandId;
    private Integer seriesId;
    private String interiorColor;
    private Integer mtocType;
    private String brandName;
    private String seriesName;
    private String modelCode;
    private String modelName;
    private String configCode;
    private String packageName;
    private Integer optionId;
    private String optionName;
    private String optionCode;
    
    /**
     * 销售指导价
     */

    public Integer getOptionId() {
		return optionId;
	}

	public void setOptionId(Integer optionId) {
		this.optionId = optionId;
	}

	public String getOptionName() {
		return optionName;
	}

	public void setOptionName(String optionName) {
		this.optionName = optionName;
	}

	/**
     * 销售单价
     */
    private Double vehiclePrice;

    /**
     * 储备高限
     */
    private Integer maxReserve;

    /**
     * 储备底限
     */
    private Integer minReserve;

    /**
     * 采购单价
     */
    private Double purchasePrice;

    /**
     * 销售底价
     */
    private Double salesBasePrice;

    /**
     * 整车加价率
     */
    private Double vehicleMarkupRate;

    /**
     * 分类名称
     */
    private String baseName;

    /**
     * 分类代码
     */
    private String baseCode;

    /**
     *整车产品价格维护_ID
     */
    private Integer productPriceId;
    /**
     *项目代号
     *
     */
    private String projectCode;
    /**
     *销售版本
     *
     */
    private String salesVersionName;
    /**
     *动力电池
     *
     */
    private String batteryCode;

    private String batteryVolume;

    private String batteryOem;
    /**
     *电机
     *
     */
    private String powerCode;

    private String powerCodeDesc;

    private String powerMachineBrand;
    /**
     *驱动形式
     *
     */
    private String driveStyleName;
    /**
     *年型版本描述
     *
     */
    private String yearModelName;
    /**
     *市场
     *
     */
    private String marketName;

    public String getProjectCode() {
        return projectCode;
    }

    public void setProjectCode(String projectCode) {
        this.projectCode = projectCode;
    }

    public String getSalesVersionName() {
        return salesVersionName;
    }

    public void setSalesVersionName(String salesVersionName) {
        this.salesVersionName = salesVersionName;
    }

    public String getBatteryCode() {
        return batteryCode;
    }

    public void setBatteryCode(String batteryCode) {
        this.batteryCode = batteryCode;
    }

    public String getBatteryVolume() {
        return batteryVolume;
    }

    public void setBatteryVolume(String batteryVolume) {
        this.batteryVolume = batteryVolume;
    }

    public String getBatteryOem() {
        return batteryOem;
    }

    public void setBatteryOem(String batteryOem) {
        this.batteryOem = batteryOem;
    }

    public String getPowerCode() {
        return powerCode;
    }

    public void setPowerCode(String powerCode) {
        this.powerCode = powerCode;
    }

    public String getPowerCodeDesc() {
        return powerCodeDesc;
    }

    public void setPowerCodeDesc(String powerCodeDesc) {
        this.powerCodeDesc = powerCodeDesc;
    }

    public String getPowerMachineBrand() {
        return powerMachineBrand;
    }

    public void setPowerMachineBrand(String powerMachineBrand) {
        this.powerMachineBrand = powerMachineBrand;
    }

    public String getDriveStyleName() {
        return driveStyleName;
    }

    public void setDriveStyleName(String driveStyleName) {
        this.driveStyleName = driveStyleName;
    }

    public String getYearModelName() {
        return yearModelName;
    }

    public void setYearModelName(String yearModelName) {
        this.yearModelName = yearModelName;
    }

    public String getMarketName() {
        return marketName;
    }

    public void setMarketName(String marketName) {
        this.marketName = marketName;
    }

    public static long getSerialVersionUid() {
        return serialVersionUID;
    }

    public Integer getProductId() {
        return productId;
    }

    public void setProductId(Integer productId) {
        this.productId = productId;
    }

    public String getDealerCode() {
        return dealerCode;
    }

    public void setDealerCode(String dealerCode) {
        this.dealerCode = dealerCode;
    }

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public String getProductCode() {
        return productCode;
    }

    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public Integer getDataSources() {
        return dataSources;
    }

    public void setDataSources(Integer dataSources) {
        this.dataSources = dataSources;
    }

    public Integer getPackageId() {
        return packageId;
    }

    public void setPackageId(Integer packageId) {
        this.packageId = packageId;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public Long getColorId() {
        return colorId;
    }

    public void setColorId(Long colorId) {
        this.colorId = colorId;
    }

    public String getTrimColor() {
        return trimColor;
    }

    public void setTrimColor(String trimColor) {
        this.trimColor = trimColor;
    }

    public Long getTrimColorId() {
        return trimColorId;
    }

    public void setTrimColorId(Long trimColorId) {
        this.trimColorId = trimColorId;
    }

    public Integer getIsPurchase() {
        return isPurchase;
    }

    public void setIsPurchase(Integer isPurchase) {
        this.isPurchase = isPurchase;
    }

    public Integer getIsSales() {
        return isSales;
    }

    public void setIsSales(Integer isSales) {
        this.isSales = isSales;
    }

    public String getModelYear() {
        return modelYear;
    }

    public void setModelYear(String modelYear) {
        this.modelYear = modelYear;
    }

    public Integer getBoxType() {
        return boxType;
    }

    public void setBoxType(Integer boxType) {
        this.boxType = boxType;
    }

    public String getVolume() {
        return volume;
    }

    public void setVolume(String volume) {
        this.volume = volume;
    }

    public Integer getIsSend() {
        return isSend;
    }

    public void setIsSend(Integer isSend) {
        this.isSend = isSend;
    }

    public Integer getProductType() {
        return productType;
    }

    public void setProductType(Integer productType) {
        this.productType = productType;
    }

    public Integer getProductStatus() {
        return productStatus;
    }

    public void setProductStatus(Integer productStatus) {
        this.productStatus = productStatus;
    }

    public Integer getIsValid() {
        return isValid;
    }

    public void setIsValid(Integer isValid) {
        this.isValid = isValid;
    }

    public Double getOemDirectivePrice() {
        return oemDirectivePrice;
    }

    public void setOemDirectivePrice(Double oemDirectivePrice) {
        this.oemDirectivePrice = oemDirectivePrice;
    }

    public Double getDirectivePrice() {
        return directivePrice;
    }

    public void setDirectivePrice(Double directivePrice) {
        this.directivePrice = directivePrice;
    }

    public LocalDate getEnterDate() {
        return enterDate;
    }

    public void setEnterDate(LocalDate enterDate) {
        this.enterDate = enterDate;
    }

    public LocalDate getExeuntDate() {
        return exeuntDate;
    }

    public void setExeuntDate(LocalDate exeuntDate) {
        this.exeuntDate = exeuntDate;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Integer getVehicleSources() {
        return vehicleSources;
    }

    public void setVehicleSources(Integer vehicleSources) {
        this.vehicleSources = vehicleSources;
    }

    public Integer getOrganizationId() {
        return organizationId;
    }

    public void setOrganizationId(Integer organizationId) {
        this.organizationId = organizationId;
    }

    public String getSourceId() {
        return sourceId;
    }

    public void setSourceId(String sourceId) {
        this.sourceId = sourceId;
    }

    public LocalDateTime getSourceChangedAt() {
        return sourceChangedAt;
    }

    public void setSourceChangedAt(LocalDateTime sourceChangedAt) {
        this.sourceChangedAt = sourceChangedAt;
    }

    public Integer getModelId() {
        return modelId;
    }

    public void setModelId(Integer modelId) {
        this.modelId = modelId;
    }

    public Integer getBrandId() {
        return brandId;
    }

    public void setBrandId(Integer brandId) {
        this.brandId = brandId;
    }

    public Integer getSeriesId() {
        return seriesId;
    }

    public void setSeriesId(Integer seriesId) {
        this.seriesId = seriesId;
    }

    public String getInteriorColor() {
        return interiorColor;
    }

    public void setInteriorColor(String interiorColor) {
        this.interiorColor = interiorColor;
    }

    public Integer getMtocType() {
        return mtocType;
    }

    public void setMtocType(Integer mtocType) {
        this.mtocType = mtocType;
    }

    public String getBrandName() {
        return brandName;
    }

    public void setBrandName(String brandName) {
        this.brandName = brandName;
    }

    public String getSeriesName() {
        return seriesName;
    }

    public void setSeriesName(String seriesName) {
        this.seriesName = seriesName;
    }

    public String getModelName() {
        return modelName;
    }

    public void setModelName(String modelName) {
        this.modelName = modelName;
    }

    public String getConfigCode() {
        return configCode;
    }

    public void setConfigCode(String configCode) {
        this.configCode = configCode;
    }

    public String getPackageName() {
        return packageName;
    }

    public void setPackageName(String packageName) {
        this.packageName = packageName;
    }

    public Double getVehiclePrice() {
        return vehiclePrice;
    }

    public void setVehiclePrice(Double vehiclePrice) {
        this.vehiclePrice = vehiclePrice;
    }

    public Integer getMaxReserve() {
        return maxReserve;
    }

    public void setMaxReserve(Integer maxReserve) {
        this.maxReserve = maxReserve;
    }

    public Integer getMinReserve() {
        return minReserve;
    }

    public void setMinReserve(Integer minReserve) {
        this.minReserve = minReserve;
    }

    public Double getPurchasePrice() {
        return purchasePrice;
    }

    public void setPurchasePrice(Double purchasePrice) {
        this.purchasePrice = purchasePrice;
    }

    public Double getSalesBasePrice() {
        return salesBasePrice;
    }

    public void setSalesBasePrice(Double salesBasePrice) {
        this.salesBasePrice = salesBasePrice;
    }

    public Double getVehicleMarkupRate() {
        return vehicleMarkupRate;
    }

    public void setVehicleMarkupRate(Double vehicleMarkupRate) {
        this.vehicleMarkupRate = vehicleMarkupRate;
    }

    public String getBaseName() {
        return baseName;
    }

    public void setBaseName(String baseName) {
        this.baseName = baseName;
    }

    public String getBaseCode() {
        return baseCode;
    }

    public void setBaseCode(String baseCode) {
        this.baseCode = baseCode;
    }

    public Integer getProductPriceId() {
        return productPriceId;
    }

    public void setProductPriceId(Integer productPriceId) {
        this.productPriceId = productPriceId;
    }

    public String getModelCode() {
        return modelCode;
    }

    public void setModelCode(String modelCode) {
        this.modelCode = modelCode;
    }

    public String getColorCode() {
        return colorCode;
    }

    public void setColorCode(String colorCode) {
        this.colorCode = colorCode;
    }

    public String getTrimColorCode() {
        return trimColorCode;
    }

    public void setTrimColorCode(String trimColorCode) {
        this.trimColorCode = trimColorCode;
    }

    public String getOptionCode() {
        return optionCode;
    }

    public void setOptionCode(String optionCode) {
        this.optionCode = optionCode;
    }
}
